import { Icon, IIconProps, IIconRef } from "@orchest/design-system";
import React from "react";

/* eslint-disable react/display-name */

export const IconPostgreSQL = React.forwardRef<IIconRef, IIconProps>(
  (props, ref) => (
    <Icon
      ref={ref}
      xmlns="http://www.w3.org/2000/svg"
      viewBox="0 0 64 64"
      fill="none"
      {...props}
    >
      <g clipPath="url(#clip0)">
        <path
          d="M47.44 46.59c.41-3.4.29-3.89 2.81-3.34l.65.06c1.94.09 4.48-.32 5.97-1 3.22-1.5 5.12-3.99 1.95-3.33-7.23 1.49-7.72-.96-7.72-.96 7.63-11.32 10.82-25.7 8.07-29.22-7.51-9.6-20.52-5.06-20.73-4.94l-.07.01c-1.43-.3-3.03-.47-4.82-.5-3.28-.05-5.76.86-7.64 2.29 0 0-23.2-9.56-22.11 12.01.22 4.6 6.57 34.73 14.15 25.63 2.76-3.33 5.44-6.15 5.44-6.15a7.02 7.02 0 004.58 1.17l.13-.1c-.04.4-.02.81.05 1.29-1.95 2.18-1.37 2.56-5.27 3.37-3.95.8-1.63 2.26-.12 2.63 1.84.46 6.08 1.11 8.95-2.9l-.11.46c.76.6.7 4.4.82 7.1.1 2.7.29 5.23.84 6.72.55 1.5 1.2 5.33 6.33 4.23 4.28-.92 7.55-2.24 7.85-14.53"
          fill="#000"
        />
        <path
          d="M47.44 46.59c.41-3.4.29-3.89 2.81-3.34l.65.06c1.94.09 4.48-.32 5.97-1 3.22-1.5 5.12-3.99 1.95-3.33-7.23 1.49-7.72-.96-7.72-.96 7.63-11.32 10.82-25.7 8.07-29.22-7.51-9.6-20.52-5.06-20.73-4.94l-.07.01c-1.43-.3-3.03-.47-4.82-.5-3.28-.05-5.76.86-7.64 2.29 0 0-23.2-9.56-22.11 12.01.22 4.6 6.57 34.73 14.15 25.63 2.76-3.33 5.44-6.15 5.44-6.15a7.02 7.02 0 004.58 1.17l.13-.1c-.04.4-.02.81.05 1.29-1.95 2.18-1.37 2.56-5.27 3.37-3.95.8-1.63 2.26-.12 2.63 1.84.46 6.08 1.11 8.95-2.9l-.11.46c.76.6.7 4.4.82 7.1.1 2.7.29 5.23.84 6.72.55 1.5 1.2 5.33 6.33 4.23 4.28-.92 7.55-2.24 7.85-14.53"
          stroke="#000"
          strokeWidth="5.37"
        />
        <path
          d="M58.82 38.97c-7.23 1.5-7.72-.95-7.72-.95 7.63-11.33 10.82-25.7 8.07-29.22-7.51-9.6-20.52-5.06-20.73-4.94l-.07.01c-1.43-.3-3.03-.47-4.83-.5-3.27-.05-5.75.86-7.63 2.29 0 0-23.2-9.56-22.12 12.01.23 4.6 6.58 34.73 14.15 25.63 2.77-3.33 5.45-6.15 5.45-6.15a7.02 7.02 0 004.58 1.17l.13-.1c-.04.4-.02.81.05 1.3-1.95 2.17-1.37 2.55-5.27 3.36-3.95.8-1.63 2.26-.12 2.63 1.84.46 6.08 1.11 8.95-2.9l-.12.46c.77.6 1.3 3.98 1.22 7.03-.1 3.06-.15 5.16.45 6.8.6 1.63 1.2 5.32 6.33 4.22 4.28-.92 6.5-3.3 6.8-7.27.23-2.82.72-2.4.75-4.92l.4-1.2c.46-3.82.08-5.05 2.71-4.48l.65.06c1.94.09 4.48-.32 5.97-1 3.21-1.5 5.12-3.99 1.95-3.34z"
          fill="#336791"
        />
        <path
          d="M32.02 41.17c-.2 7.11.05 14.28.75 16.02.7 1.74 2.18 5.13 7.31 4.03 4.28-.92 5.84-2.7 6.52-6.62.5-2.88 1.46-10.9 1.58-12.54M25.87 5.5S2.67-4 3.74 17.58c.23 4.6 6.58 34.73 14.15 25.63 2.77-3.33 5.27-5.94 5.27-5.94M38.41 3.77c-.8.25 12.91-5.02 20.7 4.94 2.76 3.52-.43 17.9-8.06 29.22"
          stroke="#fff"
          strokeWidth="1.79"
          strokeLinecap="round"
          strokeLinejoin="round"
        />
        <path
          d="M51.05 37.93s.5 2.45 7.72.96c3.17-.66 1.26 1.83-1.95 3.32-2.63 1.23-8.54 1.54-8.64-.15-.25-4.36 3.1-3.04 2.87-4.13-.22-.99-1.72-1.95-2.72-4.36-.87-2.1-11.9-18.23 3.06-15.83.55-.12-3.9-14.23-17.9-14.46-14-.23-13.53 17.21-13.53 17.21"
          stroke="#fff"
          strokeWidth="1.79"
          strokeLinecap="round"
          strokeLinejoin="bevel"
        />
        <path
          d="M28.1 39.42c-1.95 2.18-1.38 2.56-5.28 3.37-3.94.8-1.62 2.26-.11 2.63 1.83.46 6.08 1.11 8.95-2.9.87-1.22 0-3.18-1.2-3.67-.59-.24-1.36-.54-2.36.57v0z"
          stroke="#fff"
          strokeWidth="1.79"
          strokeLinecap="round"
          strokeLinejoin="round"
        />
        <path
          d="M27.97 39.38c-.2-1.28.43-2.8 1.09-4.59 1-2.67 3.29-5.35 1.45-13.84-1.37-6.33-10.55-1.32-10.55-.46 0 .86.41 4.35-.16 8.41-.74 5.3 3.38 9.8 8.12 9.33"
          stroke="#fff"
          strokeWidth="1.79"
          strokeLinecap="round"
          strokeLinejoin="round"
        />
        <path
          d="M25.79 20.36c-.04.3.54 1.08 1.29 1.18.75.1 1.4-.5 1.44-.8.04-.3-.54-.61-1.3-.72-.75-.1-1.39.05-1.43.34h0z"
          fill="#fff"
          stroke="#fff"
          strokeWidth=".6"
        />
        <path
          d="M48.7 19.76c.04.3-.54 1.08-1.3 1.18-.74.1-1.39-.5-1.43-.8-.04-.29.54-.61 1.3-.72.74-.1 1.39.05 1.43.34v0z"
          fill="#fff"
          stroke="#fff"
          strokeWidth=".3"
        />
        <path
          d="M51.4 17.74c.11 2.3-.5 3.86-.58 6.3-.12 3.56 1.7 7.63-1.04 11.7"
          stroke="#fff"
          strokeWidth="1.79"
          strokeLinecap="round"
          strokeLinejoin="round"
        />
      </g>
      <defs>
        <clipPath id="clip0">
          <path fill="#fff" transform="translate(1)" d="M0 0h62.09v64H0z" />
        </clipPath>
      </defs>
    </Icon>
  )
);

export const IconRedis = React.forwardRef<IIconRef, IIconProps>(
  (props, ref) => (
    <Icon
      ref={ref}
      xmlns="http://www.w3.org/2000/svg"
      viewBox="0 0 64 64"
      fill="none"
      {...props}
    >
      <path
        d="M61.492 46.783c-3.415 1.767-21.108 8.99-24.875 10.939-3.767 1.95-5.859 1.93-8.835.518-2.975-1.412-21.804-8.962-25.195-10.571C.89 46.865 0 46.186 0 45.544v-6.422s24.512-5.297 28.47-6.706c3.957-1.41 5.33-1.46 8.697-.236C40.535 33.405 60.672 37.01 64 38.22l-.002 6.332c.001.634-.767 1.33-2.505 2.23"
        fill="#912626"
      />
      <path
        d="M61.491 40.4c-3.415 1.766-21.108 8.988-24.874 10.937-3.767 1.95-5.86 1.93-8.835.519-2.976-1.412-21.803-8.963-25.195-10.571-3.391-1.61-3.462-2.717-.13-4.012 3.33-1.296 22.055-8.589 26.013-9.998 3.957-1.409 5.33-1.46 8.697-.235 3.368 1.224 20.955 8.174 24.283 9.383 3.329 1.212 3.456 2.21.041 3.976"
        fill="#C6302B"
      />
      <path
        d="M61.492 36.392c-3.415 1.768-21.108 8.99-24.875 10.94-3.767 1.948-5.859 1.93-8.835.517-2.976-1.411-21.804-8.962-25.195-10.571C.89 36.474 0 35.796 0 35.154v-6.423s24.512-5.297 28.47-6.706c3.957-1.41 5.33-1.46 8.697-.236C40.535 23.014 60.672 26.62 64 27.83l-.002 6.332c.001.634-.767 1.33-2.505 2.23z"
        fill="#912626"
      />
      <path
        d="M61.491 30.008c-3.415 1.767-21.108 8.989-24.874 10.939-3.767 1.949-5.86 1.93-8.835.518-2.976-1.412-21.803-8.963-25.195-10.571-3.391-1.61-3.462-2.717-.13-4.013 3.33-1.294 22.055-8.588 26.013-9.997 3.957-1.409 5.33-1.46 8.697-.235 3.368 1.224 20.955 8.173 24.283 9.383 3.329 1.212 3.456 2.21.041 3.976"
        fill="#C6302B"
      />
      <path
        d="M61.492 25.616c-3.415 1.767-21.108 8.989-24.875 10.94-3.767 1.948-5.859 1.93-8.835.517-2.976-1.411-21.804-8.962-25.195-10.571C.89 25.697 0 25.019 0 24.378v-6.423s24.512-5.297 28.47-6.706c3.957-1.41 5.33-1.46 8.697-.236 3.368 1.225 23.505 4.83 26.833 6.041l-.002 6.332c.001.634-.767 1.33-2.505 2.23z"
        fill="#912626"
      />
      <path
        d="M61.491 19.232C58.076 21 40.383 28.222 36.617 30.17c-3.767 1.95-5.86 1.93-8.835.519-2.975-1.412-21.803-8.963-25.195-10.572-3.391-1.608-3.462-2.716-.13-4.012 3.33-1.295 22.055-8.587 26.013-9.997 3.957-1.409 5.33-1.46 8.697-.235 3.368 1.225 20.955 8.174 24.283 9.384 3.329 1.21 3.456 2.208.041 3.975"
        fill="#C6302B"
      />
      <path
        d="M39.82 12.985l-5.502.567-1.231 2.942-1.99-3.283-6.354-.567 4.741-1.697-1.422-2.606 4.439 1.724 4.184-1.36-1.131 2.694 4.267 1.586zM32.759 27.26l-10.27-4.229 14.716-2.242-4.446 6.47zM18.52 14.62c4.344 0 7.866 1.355 7.866 3.027 0 1.671-3.522 3.026-7.866 3.026-4.343 0-7.864-1.355-7.864-3.026 0-1.672 3.52-3.027 7.864-3.027z"
        fill="#fff"
      />
      <path
        d="M46.324 13.79l8.709 3.416-8.702 3.413-.007-6.83"
        fill="#621B1C"
      />
      <path
        d="M36.689 17.573l9.635-3.784.007 6.83-.945.366-8.697-3.412z"
        fill="#9A2928"
      />
    </Icon>
  )
);

export const IconStreamlit = React.forwardRef<IIconRef, IIconProps>(
  (props, ref) => (
    <Icon
      ref={ref}
      xmlns="http://www.w3.org/2000/svg"
      viewBox="0 0 64 64"
      fill="none"
      {...props}
    >
      <path
        d="M31.864 36.535l-11.173-5.896L1.295 20.407c-.017-.017-.053-.017-.07-.017-.709-.336-1.435.37-1.169 1.078l9.883 25.16.001.005c.011.024.02.05.03.074.406.938 1.291 1.518 2.254 1.746.082.018.14.033.238.053.097.022.233.051.35.06l.057.003h.014l.043.004h.019a.3.3 0 00.039.002h.023c.014.002.028.002.042.002a174.057 174.057 0 0037.66 0c.15 0 .297-.008.439-.022l.134-.016c.006-.001.013-.001.018-.003l.09-.014c.044-.006.089-.014.133-.023.089-.02.129-.034.25-.075.12-.041.319-.113.443-.173.125-.06.212-.118.316-.183.13-.082.252-.165.377-.258.054-.041.09-.068.13-.105l-.022-.012-21.153-11.158z"
        fill="#FF4B4B"
      />
      <path
        d="M62.465 20.407h-.018L43.045 30.64 53.83 46.673l9.858-25.205v-.036a.85.85 0 00-1.223-1.025z"
        fill="#7D353B"
      />
      <path
        d="M32.898 15.542c-.496-.723-1.576-.723-2.054 0L20.691 30.64l11.173 5.896 21.175 11.17c.133-.13.24-.256.352-.39.16-.196.308-.407.44-.642L43.043 30.64 32.898 15.542z"
        fill="#BD4043"
      />
    </Icon>
  )
);

export const IconTensorBoard = React.forwardRef<IIconRef, IIconProps>(
  (props, ref) => (
    <Icon
      ref={ref}
      xmlns="http://www.w3.org/2000/svg"
      viewBox="0 0 64 64"
      fill="none"
      {...props}
    >
      <mask
        id="icon-tensor-board_a"
        maskUnits="userSpaceOnUse"
        x="3"
        y="0"
        width="57"
        height="64"
      >
        <path
          d="M32.7128 0L60 15.5471v14.2111l-16.3723-9.5955v7.1662l8.1255 4.7371.1213 12.2676-8.2468-4.737V57.573l-10.9149 6.316V0zm-2.4256 0v63.889l-10.9149-6.316V20.1627L3 29.7582V15.5471L30.2872 0z"
          fill="#fff"
        />
      </mask>
      <g mask="url(#icon-tensor-board_a)">
        <path
          d="M32.7128 0L60 15.5471v14.2111l-16.3723-9.5955v7.1662l8.1255 4.7371.1213 12.2676-8.2468-4.737V57.573l-10.9149 6.316V0zm-2.4256 0v63.889l-10.9149-6.316V20.1627L3 29.7582V15.5471L30.2872 0z"
          fill="url(#icon-tensor-board_icon-vscode_paint0_linear)"
        />
      </g>
      <defs>
        <linearGradient
          id="icon-tensor-board_icon-vscode_paint0_linear"
          x1="3"
          y1="31.9445"
          x2="60"
          y2="31.9445"
          gradientUnits="userSpaceOnUse"
        >
          <stop stopColor="#FF6F00" />
          <stop offset="1" stopColor="#FFA800" />
        </linearGradient>
      </defs>
    </Icon>
  )
);

export const IconVSCode = React.forwardRef<IIconRef, IIconProps>(
  (props, ref) => (
    <Icon
      ref={ref}
      xmlns="http://www.w3.org/2000/svg"
      viewBox="0 0 64 64"
      fill="none"
      {...props}
    >
      <g clipPath="url(#icon-vscode_clip0)">
        <mask
          id="icon-vscode_a"
          maskUnits="userSpaceOnUse"
          x="0"
          y="0"
          width="65"
          height="64"
        >
          <path
            fillRule="evenodd"
            clipRule="evenodd"
            d="M45.42 63.4c1 .39 2.16.36 3.17-.13l13.18-6.34a4 4 0 002.26-3.6v-43a4 4 0 00-2.26-3.6L48.59.4a3.98 3.98 0 00-4.54.78L18.83 24.18l-11-8.34a2.66 2.66 0 00-3.4.15L.92 19.2a2.67 2.67 0 000 3.95l9.53 8.7L.9 40.52a2.67 2.67 0 000 3.94l3.53 3.2c.95.87 2.38.93 3.4.16l10.99-8.34 25.22 23c.4.4.87.7 1.37.9zm2.63-46.1L28.9 31.84l19.14 14.53V17.31z"
            fill="#fff"
          />
        </mask>
        <g mask="url(#icon-vscode_a)">
          <path
            d="M61.77 6.75L48.58.4a3.99 3.99 0 00-4.54.77L.87 40.53a2.67 2.67 0 000 3.94l3.53 3.2c.95.87 2.38.93 3.4.16L59.8 8.39a2.65 2.65 0 014.24 2.11v-.15a4 4 0 00-2.26-3.6z"
            fill="#0065A9"
          />
          <g filter="url(#icon-vscode_filter0_d)">
            <path
              d="M61.77 56.92l-13.19 6.35a3.99 3.99 0 01-4.54-.77L.87 23.14a2.67 2.67 0 010-3.94L4.4 16a2.67 2.67 0 013.4-.16L59.8 55.27a2.65 2.65 0 004.24-2.1v.15a4 4 0 01-2.26 3.6z"
              fill="#007ACC"
            />
          </g>
          <g filter="url(#icon-vscode_filter1_d)">
            <path
              d="M48.58 63.27a3.99 3.99 0 01-4.54-.77c1.47 1.47 4 .43 4-1.66V2.83a2.34 2.34 0 00-4-1.66 3.99 3.99 0 014.54-.78l13.19 6.34a4 4 0 012.26 3.6v43a4 4 0 01-2.26 3.6l-13.19 6.34z"
              fill="#1F9CF0"
            />
          </g>
          <path
            style={{ mixBlendMode: "overlay" }}
            opacity=".25"
            fillRule="evenodd"
            clipRule="evenodd"
            d="M45.38 63.4c1 .39 2.16.36 3.18-.13l13.17-6.34a4 4 0 002.27-3.6v-43a4 4 0 00-2.27-3.6L48.56.4a3.98 3.98 0 00-4.55.78L18.79 24.18l-11-8.34a2.66 2.66 0 00-3.4.15L.88 19.2a2.67 2.67 0 000 3.95l9.53 8.7-9.53 8.69a2.67 2.67 0 000 3.94l3.53 3.2c.95.87 2.38.93 3.4.16l10.99-8.34 25.22 23c.4.4.87.7 1.37.9zm2.63-46.1L28.87 31.84 48 46.36V17.31z"
            fill="url(#icon-vscode_paint0_linear)"
          />
        </g>
      </g>
      <defs>
        <filter
          id="icon-vscode_filter0_d"
          x="-21.33"
          y="-6.04"
          width="106.7"
          height="91.03"
          filterUnits="userSpaceOnUse"
          colorInterpolationFilters="sRGB"
        >
          <feFlood floodOpacity="0" result="BackgroundImageFix" />
          <feColorMatrix
            in="SourceAlpha"
            values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
          />
          <feOffset />
          <feGaussianBlur stdDeviation="10.67" />
          <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0" />
          <feBlend
            mode="overlay"
            in2="BackgroundImageFix"
            result="effect1_dropShadow"
          />
          <feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape" />
        </filter>
        <filter
          id="icon-vscode_filter1_d"
          x="22.7"
          y="-21.33"
          width="62.67"
          height="106.33"
          filterUnits="userSpaceOnUse"
          colorInterpolationFilters="sRGB"
        >
          <feFlood floodOpacity="0" result="BackgroundImageFix" />
          <feColorMatrix
            in="SourceAlpha"
            values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
          />
          <feOffset />
          <feGaussianBlur stdDeviation="10.67" />
          <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0" />
          <feBlend
            mode="overlay"
            in2="BackgroundImageFix"
            result="effect1_dropShadow"
          />
          <feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape" />
        </filter>
        <linearGradient
          id="icon-vscode_paint0_linear"
          x1="32"
          y1="0"
          x2="32"
          y2="63.67"
          gradientUnits="userSpaceOnUse"
        >
          <stop stopColor="#fff" />
          <stop offset="1" stopColor="#fff" stopOpacity="0" />
        </linearGradient>
        <clipPath id="icon-vscode_clip0">
          <path fill="#fff" d="M0 0h64v64H0z" />
        </clipPath>
      </defs>
    </Icon>
  )
);
/* eslint-enable react/display-name */
